/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package editorsvg.editor.herramientas.controles;

import editorsvg.editor.documento.Direccion;
import editorsvg.editor.formas.Pintable;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;

/**
 *
 * @author Jorge
 */
public class Asa implements Pintable {
    private Point punto;
    private Rectangle rectangulo = new Rectangle();
    private Direccion direccion;
    private Color colorRelleno;
    private static final int ladoGuia = 10;

    public Asa() {        
    }
    
    public Asa(Direccion direccion, Point punto) {
        this.direccion = direccion;
        this.punto = punto;
        actualizarRectangulo();
    }
    
    @Override
    public void pintar(Graphics2D graphics) {  
        if (rectangulo == null) {
            return;
        }
        if (colorRelleno != null) {
            graphics.setColor(colorRelleno);
            graphics.fill(rectangulo);
        }
        graphics.setColor(Color.BLACK);
        graphics.draw(rectangulo);
    }

    public Point getPunto() {
        return punto;
    }

    public void setPunto(Point punto) {
        this.punto = punto;
        actualizarRectangulo();        
    }

    public Color getColorRelleno() {
        return colorRelleno;
    }

    public void setColorRelleno(Color colorRelleno) {
        this.colorRelleno = colorRelleno;
    }

    private void actualizarRectangulo() {
        switch (direccion) {
            case NO:
                rectangulo.setRect(punto.x - ladoGuia, punto.x - ladoGuia, ladoGuia, ladoGuia);
                break;
            case NE:
                rectangulo.setRect(punto.x, punto.y - ladoGuia, ladoGuia, ladoGuia);
                break;
            case SO:
                rectangulo.setRect(punto.x - ladoGuia, punto.y, ladoGuia, ladoGuia);
                break;
            case SE:
                rectangulo.setRect(punto.x, punto.y, ladoGuia, ladoGuia);
                break;
            case CENTRO:    
                rectangulo.setRect(punto.x - ladoGuia / 2, punto.y - ladoGuia / 2, ladoGuia, ladoGuia);
                break;
            
        }
    }
    
    public boolean contiene(Point punto) {
        return rectangulo.contains(punto);
    }

}
